package com.majsubtense.core.events;

public class MouseEvent extends Event {
    public static final EventType<MouseEvent> ANY;
    public static final EventType<MouseEvent> MOUSE_PRESSED;
    public static final EventType<MouseEvent> MOUSE_RELEASED;
    public static final EventType<MouseEvent> MOUSE_CLICKED;
    public static final EventType<MouseEvent> MOUSE_ENTERED_TARGET;
    public static final EventType<MouseEvent> MOUSE_ENTERED;
    public static final EventType<MouseEvent> MOUSE_EXITED_TARGET;
    public static final EventType<MouseEvent> MOUSE_EXITED;
    public static final EventType<MouseEvent> MOUSE_MOVED;
    public static final EventType<MouseEvent> MOUSE_DRAGGED;
    public static final EventType<MouseEvent> DRAG_DETECTED;
    private final javafx.scene.input.MouseEvent nativeEvent;

    public MouseEvent(EventType<? extends Event> eventType, javafx.scene.input.MouseEvent nativeEvent) {
        super(eventType);
        this.nativeEvent = nativeEvent;
    }

    public javafx.scene.input.MouseEvent getNativeEvent() {
        return nativeEvent;
    }

    static {
        ANY                     = new EventType<>(EventType.ROOT, "MOUSE_ANY");
        MOUSE_PRESSED           = new EventType<>(MouseEvent.ANY, "MOUSE_PRESSED");
        MOUSE_RELEASED          = new EventType<>(MouseEvent.ANY, "MOUSE_RELEASED");
        MOUSE_CLICKED           = new EventType<>(MouseEvent.ANY, "MOUSE_CLICKED");
        MOUSE_ENTERED_TARGET    = new EventType<>(MouseEvent.ANY, "MOUSE_ENTERED_TARGET");
        MOUSE_ENTERED           = new EventType<>(MouseEvent.ANY, "MOUSE_ENTERED");
        MOUSE_EXITED_TARGET     = new EventType<>(MouseEvent.ANY, "MOUSE_EXITED_TARGET");
        MOUSE_EXITED            = new EventType<>(MouseEvent.ANY, "MOUSE_EXITED");
        MOUSE_MOVED             = new EventType<>(MouseEvent.ANY, "MOUSE_MOVED");
        MOUSE_DRAGGED           = new EventType<>(MouseEvent.ANY, "MOUSE_DRAGGED");
        DRAG_DETECTED           = new EventType<>(MouseEvent.ANY, "DRAG_DETECTED");
    }
}
